import { GetMenu } from "@/apis/auth";

const userModel = {
    namespace: 'user',
    // 保存数据
    state: {
        menu: []
    },
    // 设置修改数据的方法
    reducers: {
        SET_MENU(state: any, { payload }: any) {
            state.menu = payload
        }
    },
    // 状态机中提供了一个属性 subscriptions 属性，
    // 该属性中有一个 setup 的方法，该方法会在项目初始化完成后执行
    subscriptions: {
        // 程序运行时执行一次
        setup({ dispatch, history }: any) {
            // 侦听路由的变化
            history.listen(async ({ pathname }: any) => {
                // 判断用户访问的不是登陆页面
                if (pathname != '/login') {
                    const userInfo = localStorage.userInfo;
                    // 判断本地存储中是否有用户信息
                    if (userInfo) {
                        // 发送请求，获取权限菜单数据
                        const res: any = await GetMenu();
                        // console.log(res);
                        // 将请求结果通过 reducers 保存到 state 中
                        dispatch({ type: 'SET_MENUS', payload: res.data });
                    }
                }
            })
        }
    }
}

export default userModel